package com.cg.service;

import com.cg.dto.ChatSessionDTO;
import com.cg.dto.ChatMessageDTO;
import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.memory.ChatMemory;
import java.util.List;

/**
 * ChatMemory管理服务接口
 * 用于管理聊天记忆和会话上下文
 */
public interface ChatMemoryService {
    
    /**
     * 创建新的聊天会话
     */
    ChatSessionDTO createChatSession(Long userId, String initialMessage);
    
    /**
     * 创建新的聊天会话（带类型）
     */
    ChatSessionDTO createChatSession(Long userId, String sessionTitle, String sessionType);
    
    /**
     * 获取或创建用户的当前会话
     */
    ChatSessionDTO getOrCreateCurrentSession(Long userId);
    
    /**
     * 获取用户的所有会话列表
     */
    List<ChatSessionDTO> getUserSessions(Long userId);
    
    /**
     * 根据类型获取用户的会话列表
     */
    List<ChatSessionDTO> getUserSessionsByType(Long userId, String sessionType);
    
    /**
     * 根据会话ID获取ChatMemory
     */
    ChatMemory getChatMemory(Long sessionId);
    
    /**
     * 添加用户消息到会话
     */
    void addUserMessage(Long sessionId, String message);
    
    /**
     * 添加AI回复到会话
     */
    void addAiMessage(Long sessionId, String message);
    
    /**
     * 获取会话的所有消息
     */
    List<ChatMessageDTO> getSessionMessages(Long sessionId);
    
    /**
     * 获取会话的ChatMemory消息（用于AI模型）
     */
    List<ChatMessage> getChatMemoryMessages(Long sessionId);
    
    /**
     * 更新会话标题（基于第一条用户消息）
     */
    void updateSessionTitle(Long sessionId, String title);
    
    /**
     * 删除会话
     */
    void deleteSession(Long sessionId, Long userId);
    
    /**
     * 清理过期的会话记忆
     */
    void cleanupExpiredMemories();
}
